package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class Top_StudentDelete {
	static Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static StringBuilder sb = new StringBuilder();
	static Scanner sc = new Scanner(System.in);
	static String[] smt = { "순번", "학번", "이름", "연락처", "주소", "학과", "등록일자" };
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static String add = null;
	static String addv = null;
	static boolean b = true;
	static String logId = Top_LoginMain.logIdVO;
	
	protected static void deleteStudent() {
		while ( b ) {
			System.out.print("삭제하실 학생 번호를 입력하세요 : ");
			add = sc.next();
			try {
				conn = Top_JDBC_Connection.openDataBase();
				pstmt = conn.prepareStatement(topsql.StudentSelectAllSQL);
				pstmt.setString( 1, add );
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					sb.append(String.format("%-3s", smt[0])).append(String.format("%-8s", smt[1]))
					.append(String.format("%-6s", smt[2])).append(String.format("%-15s", smt[3]))
					.append(String.format("%-30s", smt[4])).append(String.format("%-10s", smt[5]))
					.append(String.format("%-20s", smt[6]));
					int count = 1;
					do {
						sb.append(String.format("%-3s", count++)).append(String.format("%-8s", rs.getString(1)))
						.append(String.format("%-6s", rs.getString(2))).append(String.format("%-15s", rs.getString(3)))
						.append(String.format("%-30s", rs.getString(4))).append(String.format("%-10s", rs.getString(5)))
						.append(String.format("%-20s", rs.getString(6)));
					} while ( rs.next() );
					System.out.println( sb.toString() );
					b = false; break;
				} else { System.out.println("존재하지 않는 학생 번호입니다. 다시 입력해주세요."); }
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
			}
		}
		b = true;
		while ( b ) {
			System.out.print("삭제하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				while ( b ) {
					try {
						conn = Top_JDBC_Connection.openDataBase();
						pstmt = conn.prepareStatement(topsql.StudentSelectAll1SQL);
						pstmt.setString( 1, add );
						rs = pstmt.executeQuery();
						if ( rs.next() ) {
							System.out.print("비밀번호를 입력하세요 : ");
							addv = sc.next();
							if ( addv.equals(rs.getString(3)) ) {
								try {
									pstmt = conn.prepareStatement(topsql.StudentDeleteSQL);
									pstmt.setString( 1, add );
									int cnt = pstmt.executeUpdate();
									System.out.println( add + " 학생의 정보가 삭제 되었습니다.");
									b = false; break;
								} catch ( Exception e ) {
									e.printStackTrace();
								} finally {
									Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
								}
							} else { System.out.println("비밀번호를 잘못 입력하셨습니다. 다시 확인해주세요."); }
						}
						b = false; break;
					} catch ( Exception e ) {
						e.printStackTrace();
					} finally {
						Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
					}
				}
				b = false; break;
			case "N" : case "n" :
				System.out.println("작업이 취소되었습니다.");
				System.out.println("학생 관련 업무 화면으로 이동합니다.");
				Top_StudentMain.Top_StudentAdminScreen();
				b = false; break;
			default : 
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("다른 학생의 정보를 삭제하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.println("다른 학생 정보를 삭제합니다.");
				deleteStudent();
				b = false; break;
			case "N" : case "n" :
				System.out.println("학생 관련 업무 화면으로 이동합니다.");
				Top_StudentMain.Top_StudentAdminScreen();
				b = false; break;
			default : 
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}